@echo off
REM 账号密码管理器 - Windows部署脚本
REM 使用方法：deploy.bat [dev|prod|stop|clean|help]

setlocal EnableDelayedExpansion

set "command=%1"
if "%command%"=="" set "command=dev"

echo [INFO] 账号密码管理器 - Windows 部署脚本

REM 检查PHP
php --version >nul 2>&1
if errorlevel 1 (
    echo [ERROR] PHP未安装或未添加到PATH
    exit /b 1
)

REM 检查Composer
composer --version >nul 2>&1
if errorlevel 1 (
    echo [ERROR] Composer未安装或未添加到PATH
    exit /b 1
)

REM 检查Node.js
node --version >nul 2>&1
if errorlevel 1 (
    echo [ERROR] Node.js未安装或未添加到PATH
    exit /b 1
)

REM 检查npm
npm --version >nul 2>&1
if errorlevel 1 (
    echo [ERROR] npm未安装或未添加到PATH
    exit /b 1
)

if "%command%"=="dev" goto :deploy_dev
if "%command%"=="prod" goto :deploy_prod
if "%command%"=="stop" goto :stop_services
if "%command%"=="clean" goto :clean_cache
if "%command%"=="help" goto :show_help
goto :show_help

:deploy_dev
echo [INFO] 部署开发环境...

REM 后端部署
echo [INFO] 部署后端...
cd backend

if not exist ".env" (
    if exist ".env.example" (
        copy ".env.example" ".env"
        echo [WARNING] 已创建.env文件，请修改其中的配置
    ) else (
        echo [ERROR] 未找到.env.example文件
        exit /b 1
    )
)

echo [INFO] 安装PHP依赖...
composer install --no-dev --optimize-autoloader

cd ..

REM 前端部署
echo [INFO] 部署前端...
cd frontend

echo [INFO] 安装前端依赖...
npm install

cd ..

REM 启动服务
echo [INFO] 启动开发服务...
start "Backend Server" cmd /c "cd backend && php think run"
start "Frontend Server" cmd /c "cd frontend && npm run dev"

echo [SUCCESS] 开发环境部署完成！
echo [INFO] 前端地址: http://localhost:3000
echo [INFO] 后端地址: http://localhost:8000
echo [INFO] 停止服务: deploy.bat stop
goto :end

:deploy_prod
echo [INFO] 部署生产环境...

REM 后端部署
echo [INFO] 部署后端...
cd backend

if not exist ".env" (
    if exist ".env.example" (
        copy ".env.example" ".env"
        echo [WARNING] 已创建.env文件，请修改其中的配置
    ) else (
        echo [ERROR] 未找到.env.example文件
        exit /b 1
    )
)

echo [INFO] 安装PHP依赖...
composer install --no-dev --optimize-autoloader

cd ..

REM 前端构建
echo [INFO] 构建前端...
cd frontend

echo [INFO] 安装前端依赖...
npm install

echo [INFO] 构建生产版本...
npm run build

cd ..

echo [SUCCESS] 生产环境部署完成！
echo [INFO] 前端构建文件位于 frontend/dist/ 目录
echo [INFO] 请参考README.md配置Web服务器
goto :end

:stop_services
echo [INFO] 停止开发服务...
taskkill /f /im "node.exe" >nul 2>&1
taskkill /f /im "php.exe" >nul 2>&1
echo [SUCCESS] 服务已停止
goto :end

:clean_cache
echo [INFO] 清理缓存...
if exist "backend\runtime\cache" rmdir /s /q "backend\runtime\cache"
if exist "frontend\dist" rmdir /s /q "frontend\dist"
if exist "frontend\node_modules\.cache" rmdir /s /q "frontend\node_modules\.cache"
echo [SUCCESS] 缓存已清理
goto :end

:show_help
echo.
echo 账号密码管理器 - Windows 部署脚本
echo.
echo 使用方法:
echo   deploy.bat [command]
echo.
echo 命令:
echo   dev           部署开发环境（默认）
echo   prod          部署生产环境
echo   stop          停止开发服务
echo   clean         清理缓存
echo   help          显示帮助信息
echo.
echo 示例:
echo   deploy.bat dev       # 部署开发环境
echo   deploy.bat prod      # 部署生产环境
echo   deploy.bat stop      # 停止服务
goto :end

:end
pause